const db = require('../db')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const config = require('../config')

// 登录处理函数
exports.login = (req, res) => {
    const userinfo = req.body
    // 验证表单数据
    if (!userinfo.username || !userinfo.password) {
        return res.cc('用户名或密码不能为空')
    }
    /*const password = '123456'
    // 加密（第二个参数是 salt 的复杂度，推荐 10）
    bcrypt.hash(password, 10, (err, hash) => {
        if (err) {
        return console.error('加密失败:', err)
        }
        console.log('加密后的密码:', hash)
        // 保存 hash 到数据库
    })*/

    const sql = 'select * from users where username=?'
    db.query(sql, userinfo.username, (err, results) => {
        if (err) return res.cc(err)
        if (results.length === 0) return res.cc('用户名不存在')

        // 判断密码是否正确
        const compareResult = bcrypt.compareSync(userinfo.password, results[0].password)
        if (!compareResult) return res.cc('密码错误')

        // 生成JWT token
        const user = {...results[0], password: ''}
        const tokenStr = jwt.sign(user, config.jwtSecretKey, {
            expiresIn: config.expiresIn
        })

        res.send({
            status: 200,
            message: '登录成功',
            token: 'Bearer ' + tokenStr
        })
    })
}